
package DAO;

import java.sql.*;
import java.util.LinkedList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

public class PartidoDAO extends DaoBaseMySql implements DaoInterface<PartidoVO, PartidoPK>
{

    public PartidoDAO() {
    }

    public PartidoDAO(long pTransId) {
        super(pTransId);
    }

    public PartidoVO Crear(PartidoVO pData, int numFecha) {
        Connection wCnn = null;
        try
        {
            wCnn = getConnection();
            CallableStatement wStm = wCnn.prepareCall("{call sp_insertar_partido(?, ?, ?, ?, ?, ?, ?)}");
            wStm.setInt(1, pData.getEquipoLocal().getKey().getId());
            wStm.setInt(2, pData.getEquipoVisitante().getKey().getId());
            wStm.setDate(3, new java.sql.Date(pData.getFecha().getTime()));
            wStm.setInt(4, pData.getGolesLocal());
            wStm.setInt(5, pData.getGolesVisitante());
            wStm.registerOutParameter(6, Types.INTEGER);
            wStm.setInt(7, numFecha);

            wStm.execute();

            pData = new PartidoVO(wStm.getInt("nuevoId"), pData.getEquipoLocal(), pData.getEquipoVisitante(), pData.getFecha(), pData.getGolesLocal(), pData.getGolesVisitante());

        }
        catch (SQLException ex)
        {
                rollbackTransaction(transId);
                Logger.getLogger(EquipoDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        return pData;
    }
    public List<PartidoVO> ListarLocal(EquipoVO pFiltro) {
        Connection wCnn = null;
        List<PartidoVO> wSalida = new LinkedList<PartidoVO>();
        try
        {
            wCnn = getConnection();
            CallableStatement wStm = wCnn.prepareCall("{call sp_consultar_partidos_equipo_local(?)}");

            wStm.setString(1, pFiltro.getNombre());

            ResultSet wRs = wStm.executeQuery();
            while (wRs.next())
            {
                PartidoVO wAux = new PartidoVO(pFiltro, new EquipoVO(wRs.getString(5)), new java.util.Date(wRs.getDate(2).getTime()), wRs.getInt(3), wRs.getInt(4));
                wSalida.add(wAux);
            }
        }
        catch (SQLException ex)
        {
                rollbackTransaction(transId);
                Logger.getLogger(PartidoDAO.class.getName()).log(Level.SEVERE, null, ex);
        }

        return wSalida;

    }
    public List<PartidoVO> ListarVisitante(EquipoVO pFiltro) {
        Connection wCnn = null;
        List<PartidoVO> wSalida = new LinkedList<PartidoVO>();
        try
        {
            wCnn = getConnection();
            CallableStatement wStm = wCnn.prepareCall("{call sp_consultar_partidos_equipo_visitante(?)}");

            wStm.setString(1, pFiltro.getNombre());

            ResultSet wRs = wStm.executeQuery();
            while (wRs.next())
            {
                PartidoVO wAux = new PartidoVO(new EquipoVO(wRs.getString(5)),pFiltro, new java.util.Date(wRs.getDate(2).getTime()), wRs.getInt(3), wRs.getInt(4));
                wSalida.add(wAux);
            }
        }
        catch (SQLException ex)
        {
                rollbackTransaction(transId);
                Logger.getLogger(PartidoDAO.class.getName()).log(Level.SEVERE, null, ex);
        }

        return wSalida;

    }
    public List<PartidoVO> Listar() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public List<PartidoVO> Listar(String pFiltro) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public PartidoVO Crear(PartidoVO pData) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void Actualizar(PartidoVO pData) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void Borrar(PartidoPK pKey) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public PartidoVO Cargar(PartidoPK pKey) {
        throw new UnsupportedOperationException("Not supported yet.");
    }


}
